<%@ page import="com.User" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
  User: Elle
  Date: 2022/6/30
  Time: 8:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>EL表达式</title>
  </head>
  <body>
  <%
    String name = "hyl";
    User tmp = new User();
    tmp.setName("张三");

    Map<String,Object> map = new HashMap<String,Object>();
    map.put("count", "29");
    map.put("user",tmp);

    /*
    * EL表达式
    * 1、获取内置对象中存储数据
    * 2、使用setAttribute中key来获取数据
    * 3、使用El表达式获取的数据的数据类型，如果是实体【JavaBean】,使用其属性时，属性必须包含get方法。
    * 4、或对象和Map中的值，使用点 操作符 / ["key"]
    *
    * 不同内置对象
    * 1、当内置对象中存储数据的名称相同时，则就近原则【page>request>session>application】
    * 2、获取指定的内置对象，El提供了隐式对象【pageScope /  requestScope / sessionScope / applicationScope】
    *
    * */
    pageContext.setAttribute("username", "张三"); //将数据保存到内置对象中
    pageContext.setAttribute("user",tmp);
    pageContext.setAttribute("map",map);

    request.setAttribute("username", "李四");

    session.setAttribute("username", "王五");

    request.getParameter("test"); // ${param.test}
    request.getParameterValues("love");//${paramValues.love}
  %>

  <c:set var="testname" value="${map.user.name}" />

  姓名：${username } - ${requestScope.username}<br>
  对象里属性的值: ${user.name }<br>
  Map中key的值：${map.count}<br>
  param获取请求的参数：${param.test} - ${paramValues.love[0]}<br>
  pagecontext值：${pageContext.request.contextPath} <br>

  c:set值：${testname} - <c:out value="${testname}"/> <br>

  <a href="${pageContext.request.contextPath}/index.jsp?test=123&love=lq&love=yx">测试</a>
  </body>
</html>
